<?php

namespace falcon5\inc\Infrastructure\Clients;

use Psr\Http\Message\ResponseInterface;

/**
 * Interface FC5Client
 * @package Falcon5\inc\Infrastructure\Clients
 */
interface FC5Client
{
    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/entry/save"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function saveEntry($body): ResponseInterface;

    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Get,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/entry/list_by_page")
     * )
     *
     * @param int $page_id
     * @param string $original_lang
     * @param string $translated_lang
     * @param string $keyword
     * @param int $page
     * @param int $page_size
     * @return ResponseInterface
     */
    public function entryList(int $page_id, string $original_lang, string $translated_lang, string $keyword, int $page = 1, int $page_size = 10): ResponseInterface;


    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/api/site/validateKey"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function validateKey($body): ResponseInterface;


    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/auth/bind_domain"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function bindDomain($body): ResponseInterface;


    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Get,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/api/language/languages")
     * )
     *
     * @return ResponseInterface
     */
    public function supportLang(): ResponseInterface;
    
    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Get,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/site/page/list_statistics")
     * )
     *
     * @param string $page_ids
     * @param int $page
     * @param int $page_size
     * @return ResponseInterface
     */
    public function getPageStatisticsList(string $page_ids = '', int $page = 1, int $page_size = 10): ResponseInterface;

    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/entry/slug/translate"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function translateUrl($body): ResponseInterface;


    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/site/page/lock"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function lockPage($body): ResponseInterface;

    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/site/page/unlock"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function unlockPage($body): ResponseInterface;


    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/api/site/getRuleList"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function checkUserLanguageEditPermission($body): ResponseInterface;


    /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/api/site/updateSite"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function updateSite($body): ResponseInterface;

     /**
     * @hollisho\httpclient\Annotations\Action(
     *     method=@hollisho\httpclient\Annotations\Method\Post,
     *     endpoint=@hollisho\httpclient\Annotations\Request\Endpoint(uri="/api/platform/subscribeByApikey"),
     *     body=@hollisho\httpclient\Annotations\Request\Body(formParams=true, name="body")
     * )
     *
     * @param $body
     * @return ResponseInterface
     */
    public function getPlatformSubscribe($body): ResponseInterface;

}